package com.sevenGroup.pawnshop.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sevenGroup.pawnshop.Utils.Result;
import com.sevenGroup.pawnshop.controller.form.DelByIdsForm;
import com.sevenGroup.pawnshop.controller.form.SecondTypeForm;
import com.sevenGroup.pawnshop.controller.form.SencondTypePageForm;
import com.sevenGroup.pawnshop.controller.info.SecondTypeInfo;
import com.sevenGroup.pawnshop.exception.sevenGroupException;
import com.sevenGroup.pawnshop.model.SecondType;
import com.sevenGroup.pawnshop.service.SecondTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author sevenGroup
 * @since 2022-02-16
 */
@RestController
@RequestMapping("/secondType")
@Api(tags = "商品小类的增删改查")
public class SecondTypeController {
    @Autowired
    SecondTypeService secondTypeService;
    @ApiOperation("对小类的添加和修改，有id则修改，没有id则新增")
    @PreAuthorize("hasAnyAuthority('boss','shopManage')")
    @PostMapping("saveAndUpdate")
    Result saveOrUpdate(@ApiParam("商品小类的参数对象") @RequestBody SecondTypeForm secondTypeForm) throws sevenGroupException {
        secondTypeService.saveAndUpdate(secondTypeForm);
        return new Result().setState(200).setMessage("操作成功");
    }
    //查询所有小类，没有分页
    @ApiOperation("查询所有小类，没有分页")
    @GetMapping("selectAll")
    Result selectAll() throws sevenGroupException {
        List<SecondTypeInfo> secondTypeInfos = secondTypeService.selectAll();
        return new Result().setState(200).setMessage("查询成功").setDate(secondTypeInfos);
    }
    //根据条件查询所有小类，分页查询。必须有page对象，其他条件可以没有
    @ApiOperation("根据条件查询所有小类，分页查询。必须有page对象，其他条件可以没有")
    @PostMapping("selectByName")
    Result selectByName(@ApiParam("小类的分页查询参数对象") @RequestBody SencondTypePageForm sencondTypePageForm) throws sevenGroupException {
        IPage<SecondTypeInfo> secondTypeInfos = secondTypeService.selectByName(sencondTypePageForm);
        return new Result().setState(200).setMessage("查询成功").setDate(secondTypeInfos);
    }
    //根据小类id进行删除
    @ApiOperation("根据小类id进行删除")
    @PreAuthorize("hasAnyAuthority('boss','shopManage')")
    @PostMapping("del")
    Result del(@ApiParam("id集合的参数对象") @RequestBody DelByIdsForm delByIdsForm) throws sevenGroupException {
        secondTypeService.del(delByIdsForm.getId());
        return new Result().setState(200).setMessage("删除成功");
    }
    //根据大类查询小类
    @ApiOperation("根据大类查询显示的小类（无ID查所有显示的小类）")
    @PostMapping("selectByFirstId")
    Result selectByFirstId( Integer firstId){
        List<SecondTypeInfo> secondTypeInfos =secondTypeService.selectByFirstId(firstId);
        return new Result().setDate(secondTypeInfos).setState(200);
    }
}

